package com.superview.util;

import com.iflytek.cloud.speech.SpeechConstant;
import com.iflytek.cloud.speech.SpeechError;
import com.iflytek.cloud.speech.SpeechSynthesizer;
import com.iflytek.cloud.speech.SynthesizeToUriListener;
import com.superview.util.domain.PCM2WAV;

import steed.util.base.BaseUtil;

public class TTSUtil {
	
	public static void speechSynthes(String target,String path,String fileName) {
		// 1.创建SpeechSynthesizer对象
		SpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer();
		// 2.合成参数设置，详见《MSC Reference Manual》SpeechSynthesizer 类
		mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");// 设置发音人
		mTts.setParameter(SpeechConstant.SPEED, "50");// 设置语速，范围0~100
		mTts.setParameter(SpeechConstant.PITCH, "50");// 设置语调，范围0~100
		mTts.setParameter(SpeechConstant.VOLUME, "50");// 设置音量，范围0~100
//		mTts.
		// 合成监听器
		SynthesizeToUriListener synthesizeToUriListener = new SynthesizeToUriListener() {
			// progress为合成进度0~100
			public void onBufferProgress(int progress) {
				BaseUtil.out(progress);
			}

			// 会话合成完成回调接口
			// uri为合成保存地址，error为错误信息，为null时表示合成会话成功
			public void onSynthesizeCompleted(String uri, SpeechError error) {
				BaseUtil.out(error);
				if (error == null) {
					//音频格式转换
					try {
						PCM2WAV.convertAudioFiles(path+"temp.pcm",  path+fileName);
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			}

			@Override
			public void onEvent(int arg0, int arg1, int arg2, int arg3, Object arg4, Object arg5) {
				// TODO Auto-generated method stub

			}
		};
		// 3.开始合成
		// 设置合成音频保存位置（可自定义保存位置），默认保存在“./tts_test.pcm”
		mTts.synthesizeToUri(target, path+"temp.pcm", synthesizeToUriListener);
		
	}
	public static void speechSynthes(String target,String path,String fileName,SynthesizeToUriListener synthesizeToUriListener) {
		// 1.创建SpeechSynthesizer对象
		SpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer();
		// 2.合成参数设置，详见《MSC Reference Manual》SpeechSynthesizer 类
		mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");// 设置发音人
		mTts.setParameter(SpeechConstant.SPEED, "50");// 设置语速，范围0~100
		mTts.setParameter(SpeechConstant.PITCH, "50");// 设置语调，范围0~100
		mTts.setParameter(SpeechConstant.VOLUME, "50");// 设置音量，范围0~100
//		mTts.
		// 3.开始合成
		// 设置合成音频保存位置（可自定义保存位置），默认保存在“./tts_test.pcm”
		mTts.synthesizeToUri(target, path+"temp.pcm", synthesizeToUriListener);
		
	}
}
